from django.contrib.auth.mixins import LoginRequiredMixin
from django import http
from meiduo_01.utils.response_code import RETCODE


class LoginRequiredJsonMixin(LoginRequiredMixin):
    """自定义判断用户是否登录的扩展类：返回JSON"""
    # 为什么只需要重写handle_no_permission？
    # 因为判断用户是否登录的操作在父类中已经完成，子类只需关注 如果用户未登录，对应怎样的操作
    def handle_no_permission(self):
        """直接响应JSON数据"""
        return http.JsonResponse({'code': RETCODE.SMSCODERR, 'errmsg': '用户未登录'})


"""
    def handle_no_permission(self):
        if self.raise_exception:
            raise PermissionDenied(self.get_permission_denied_message())
        return redirect_to_login(self.request.get_full_path(), self.get_login_url(), self.get_redirect_field_name())
"""